Three-dimensional graphic technology is commonly employed in modern graphic systems. In a three-dimensional graphic system, a three-dimensional object is represented in terms of three coordinates (height, width, and length), and the image is displayed on a two-dimensional monitor. Such technology allows the object to be more realistically represented on the monitor.
A graphic object to be displayed is commonly configured as a series of vertices, each containing image information such as color. To achieve a more realistic reproduction of the object in the image scene, a process referred to as texture mapping is utilized. In a texture mapping process, a texture image is mapped onto a surface of an object, or vertex of the object, to vary the displayed color characteristics, and thereby provide a more realistic three-dimensional representation of the object. A texture represents a type of image, such as a stripe pattern, checkerboard pattern, or more complex patterns, that characterize the object in a natural manner.
Texture data commonly takes the form of a set of texels that are collectively stored in a texture memory. A texel is a smallest unit of graphical element in a two-dimensional texture map that is used to render a three-dimensional object. A texel represents a single color combination at a specific position in the texture map.
Texture mapping is both computationally intensive and memory access intensive, and can generally be categorized according to the type of texture filtering that is performed. In a bilinear filtering process, 4 texels are fetched from memory for texture filtering that is performed. In a bilinear a trilinear filtering process, 8 texels are fetched from memory for texture mapping of each screen pixel. Each pixel displayed on the two-dimensional image screen is a combination of the associated pixel information, or pixel color, and the associated texel information, or texel color. Texture mapping therefore introduces an additional computational layer to the image display process.
Within a single application, it is common to have textural information at various levels of precision, or bit formats. For example, within the same application, first textural information can be 16 bits wide, second textural information can be 32 bits wide and third textural information can be 64 bits wide. In general, a larger bit format results in a more realistic display of the texture representation, but is more computationally expensive.
Further, within a single application, the textural information can also be stored according to different storage patterns. For example, in a stride pattern, sequential textural data are stored sequentially in memory. In a twiddle pattern, sequential textural data are stored on adjacent rows according to a known twiddle format. The twiddle format is an especially attractive format for a bilinear textural filtering process, because bilinear filtering requires access to 4 neighboring texels, and the twiddle format allows access to the 4 neighboring texels in a single burst access.
In contemporary graphic display systems, the block size of texture cache determines the number of individually addressable data elements that are retrieved from memory upon each memory access, or fetch. Therefore, for each instance that texture data are fetched from memory, a fixed number of data elements are returned, and the data are returned according to a fixed storage pattern, for example either stride or twiddle patterns. Each fetch by the texture cache from system memory requires exclusive use of the system bus, to transfer address and command signals from the texture cache to the memory controller. Excessive use of the system bus can have an adverse effect on overall system performance.